<?php

class User extends Admin_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function index($id = NULL) {
        // lấy tất cả users có trong data
        $this->data['users'] = $this->user_m->get();
        
        // Load view
        $this->data['subview'] = 'admin/user/index';
        $this->load->view('admin/_layout_main', $this->data);
    }

    public function edit($id = NULL) {
        // lấy một user từ id hoặc tạo mới nếu không có thông tin id
        if ($id) {
            $this->data['user'] = $this->user_m->get($id);
            count($this->data['user']) || $this->data['errors'][] = 'User could not be found'; // nếu ko tìm thấy user thì in lỗi
        } else {
            $this->data['user'] = $this->user_m->get_new();
        }

        // lấy rules đổi passwork, email, add user để validate form
        $rules = $this->user_m->rules_admin;
        $id || $rules['password']['rules'] .= '|required'; // nếu chưa biết id thì yêu cầu password để edit
        $this->form_validation->set_rules($rules);
        
        // tiếng hành chạy form
        if ($this->form_validation->run() == TRUE) {
            $data = $this->user_m->array_from_post(array('name', 'email', 'password'));
            $data['password'] = $this->user_m->hash($data['password']);
            $this->user_m->save($data, $id);
            redirect('admin/user');
        }

        // load view
        $this->data['subview'] = 'admin/user/edit';
        $this->load->view('admin/_layout_main', $this->data);
    }

    public function delete($id) {
        $this->user_m->delete($id);
        redirect('admin/user');
    }

    public function login() {
        
        // Nếu đã đăng nhập rồi thì chuyển hướng
        $dashboard = 'admin/dashboard';
        $this->user_m->loggedin() == FALSE || redirect($dashboard);

        // thêm luật validate cho form
        $rules = $this->user_m->rules;
        $this->form_validation->set_rules($rules);
        
        // chạy form
        if ($this->form_validation->run() == TRUE) {
            // We can login and redirect
            if ($this->user_m->login() == TRUE) {
                redirect($dashboard);
            } else {
                $this->session->set_flashdata('error', 'That email/password combination does not exist');
                redirect('admin/user/login', 'refresh');
            }
        }

        // load view
        $this->data['subview'] = 'admin/user/login';
        $this->load->view('admin/_layout_modal', $this->data);
    }

    public function logout() {
        $this->user_m->logout();
        redirect('admin/user/login');
    }

    // kiểm tra email có tồn tại chưa
    public function _unique_email($str) {
        // KHÔNG validate nếu email đã tồn tại
        // trừ khi là email của người dùng đang sử dụng
        
        // lấy id từ segment thứ 4
        $id = $this->uri->segment(4);
        $this->db->where('email', $this->input->post('email'));
        !$id || $this->db->where('id !=', $id);
        $user = $this->user_m->get();

        if (count($user)) {
            $this->form_validation->set_message('_unique_email', '%s have been used !');
            return FALSE;
        }
        return TRUE;
    }
}

?>
